#pragma once

#include "CompareFunctions.h"
#include "TypeInfo.h"

namespace MockItNow
{
	template<typename T>
	class DefaultCompareFunction
	{
	public:
	
		DefaultCompareFunction()
		: function(&CompareByValue<typename TypeInfo<T>::StorageType>)
		{
		}

		typename TypeInfo<T>::CompareFunction function;
	};

#define DEFAULT_COMPARE_FUNCTION(Type, Function) \
	namespace MockItNow \
	{	\
		template<> \
		class DefaultCompareFunction<Type> \
		{ \
		public: \
			DefaultCompareFunction() \
			: function(&Function<TypeInfo<Type>::StorageType>) \
			{ \
			} \
			TypeInfo<Type>::CompareFunction function; \
		}; \
	}
}
